Alteryx:データ入力時のSQLを動的に変更したい
こんにちは、DI部の兼本です。
Alteryxでデータベースからデータを読み込む際にSQLクエリを動的に変更したいとき、ありませんか? 今回はアドホックにSQLクエリのWhere句を変更する方法についてご紹介いたします。
使用した環境
- Alteryx Designer 2019.1を使用しています。
通常のデータ読み込み
Alteryxでデータの読み込みを行う場合、データ入力ツールを使用します。 例えば、Microsoft SQL Serverの場合は、以下のような設定をすることで、データベースに対してSQLクエリを発行することができます。
上記の設定を行いワークフローを実行すると、以下のようなSQLクエリがデータベースサーバに対して実行されます。
Select Transactions.Customer_ID, Transactions.Order_ID, Transactions.Product_Category, Transactions.Quantity, Transactions.Unit_Price From Transactions
クエリの実行結果は以下のようになります。
このデータを見ると、ProductCategory(製品カテゴリ)というフィールドに、
- Office Supplies
- Technology
- Furniture
という3つのカテゴリが格納されていることがわかります。 次のステップでは、この製品カテゴリを使って絞り込みをしてみます。
クエリを動的に変更する場合
動的入力ツールを使用することで、SQLクエリの書き換えができます。 ワークフローはシンプルにこんな感じにしています。
テキストインプットツールには、以下のデータを入力してありますが、このデータはあとでWhere句に渡す検索条件として使用します。
なお、今回はわかりやすくするためにテキストインプットツールを使用していますが、ここにワークフローで前処理した結果やインターフェースツールでパラメータとして受け取った結果を渡すことで、インタラクティブな処理を実現することも可能です。
メインとなる動的入力ツールでは最初にデータ入力ソーステンプレートの編集を行います。 「編集」ボタンを押下すると、データ入力ツールと同様に入力するデータソースを指定できますので、データベースへの接続設定とSQLクエリを作成します。
ビジュアルクエリビルダを使用しているとわかりにくいですが、作成したSQLクエリは以下のようになっています。
Select Transactions.Customer_ID, Transactions.Order_ID, Transactions.Product_Category, Transactions.Profit, Transactions.Quantity From Transactions Where Transactions.Product_Category = 'Technology'
テンプレートとして作成したSQLクエリのWhere句を書き換えるには動的入力ツールの「SQLクエリを更新」オプションを選択し、アクションとして「SQL:WHERE句を更新する」を追加します。
メニューから「SQL:WHERE句を更新する」を選択すると、以下のダイアログが表示されます。
テンプレートで作成したSQLクエリのWhere句に当たる部分が自動的に設定されていますので、「置換フィールド」にテキスト入力ツールで用意した「Category」を指定します。 このワークフローを実行すると、元のSQLクエリのWhere句に指定された値をテキスト入力ツールで指定された値に置き換えることで、以下のSQLクエリを順番に実行してくれます。
Select Transactions.Customer_ID, Transactions.Order_ID, Transactions.Product_Category, Transactions.Profit, Transactions.Quantity From Transactions Where Transactions.Product_Category = 'Furniture' Select Transactions.Customer_ID, Transactions.Order_ID, Transactions.Product_Category, Transactions.Profit, Transactions.Quantity From Transactions Where Transactions.Product_Category = 'Office Supplies'
動的入力ツールで実行した結果はユニオンツールで接続した場合と同様に積み上げて出力されるため、結果として製品カテゴリが「Furniture」と「Office Supplies」に一致するレコードを抽出することができます。 このことは、出力をProduct_CategoryごとのOrder_IDをカウントすることで確認できます。
まとめ
今回はSQL文のWhere句を動的に更新する方法についてご紹介いたしました。 この方法ではひとつのワークフローから複数のSQLクエリを実行するため、データベースサーバへの負荷が高くなる可能性があります。 処理や環境に最適なワークフローを考慮するにはIn-DatabaseツールによるELT処理もご検討ください。
Alteryxの導入なら、クラスメソッドにおまかせください
日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。